package com.gitee.lougnib.simple.jxls;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Map;

import org.jxls.common.Context;
import org.jxls.transform.Transformer;
import org.jxls.transform.poi.PoiTransformer;
import org.jxls.util.JxlsHelper;

/**
 * Jxls 相关的工具类。
 * 
 * @author Lou
 * @version 2021/07/02
 * @since 2021/06/30
 */
public final class JxlsUtils {

	/**
	 * 输出一个 Excel 流。
	 * 
	 * @param model 数据模型
	 * @param is Excel 模板的输入流
	 * @param file Excel 的输出文件
	 * @throws IOException 输出异常
	 * @since 2021/07/02
	 */
	public static void writeExcel(Map<String, Object> model, InputStream is, File file) throws IOException {
		try (FileOutputStream os = new FileOutputStream(file)) {
			writeExcel(model, is, os);
		}
	}
	
	/**
	 * 输出一个 Excel 流。
	 * 
	 * @param model 数据模型
	 * @param is Excel 模板的输入流
	 * @param os Excel 的输出流
	 * @throws IOException 输出异常
	 * @since 2021/06/30
	 */
	public static void writeExcel(Map<String, Object> model, InputStream is, OutputStream os) throws IOException {
		Context context = PoiTransformer.createInitialContext();
		if (model != null) {
			for (String key : model.keySet()) {
				context.putVar(key, model.get(key));
			}
		}
		
		JxlsHelper jxlsHelper = JxlsHelper.getInstance();
		Transformer transformer = jxlsHelper.createTransformer(is, os);
		jxlsHelper.setUseFastFormulaProcessor(false).processTemplate(context, transformer);
	}

}
